/**
 * bcryptjs密码加密
 * bcryptjs是一个第三方密码加密库，是对原有bcrypt的优化，优点是不需要安装任何依赖
 */

var bcrypt = require('bcryptjs');


//同步用法(Sync)
/** 生成hash密码
 *   password  要进行加密的密码
 */
exports.encryption= function(password){
    var salt = bcrypt.genSaltSync(10);  //生成一个随机数
    var hash = bcrypt.hashSync(password, salt);  //生成hash密码
    return hash;
}


/** 密码验证
 *   password要进行验证的密码，hash原密码加密过得到的hash值
 */
exports.verification= function (password, hash) {
    let verif= bcrypt.compareSync(password, hash);
    return verif;
}


//异步用法(Async)
//生成hash密码
exports.AsyncEncryption= function(password){
    bcrypt.genSalt(10, function(err, salt) {
        bcrypt.hash(password, salt, function(err, hash) {
            // Store hash in your password DB.
            _hash= hash;
        });
    });
}


//密码验证
exports.AsyncVerification= function (password, hash) {
    bcrypt.compare(password, hash, function(err, res) {
        // res === true
    });
}

